package com.bank.mapper;

import com.bank.entity.TradeInfo;
import org.apache.ibatis.annotations.*;
import java.util.List;

/**
 * 交易信息数据访问接口
 * 提供对tradeInfo表的增删查操作
 * 使用MyBatis注解方式实现SQL映射
 */
@Mapper
public interface TradeInfoMapper {
    /**
     * 查询所有交易信息
     * @return 交易信息列表
     */
    @Select("SELECT * FROM tradeInfo")
    List<TradeInfo> findAll();

    /**
     * 根据卡号查询交易信息
     * @param cardID 银行卡号
     * @return 交易信息列表
     */
    @Select("SELECT * FROM tradeInfo WHERE cardID = #{cardID}")
    List<TradeInfo> findByCardId(String cardID);

    /**
     * 新增交易信息
     * @param tradeInfo 交易信息对象
     * @return 影响的行数
     */
    @Insert("INSERT INTO tradeInfo(tradeDate, tradeType, cardID, tradeMoney, remark) " +
            "VALUES(#{tradeDate}, #{tradeType}, #{cardID}, #{tradeMoney}, #{remark})")
    int insert(TradeInfo tradeInfo);

    /**
     * 删除交易信息
     * @param cardID 银行卡号
     * @param tradeDate 交易时间
     * @return 影响的行数
     */
    @Delete("DELETE FROM tradeInfo WHERE cardID = #{cardID} AND tradeDate = #{tradeDate}")
    int delete(@Param("cardID") String cardID, @Param("tradeDate") String tradeDate);

    /**
     * 根据客户ID查询该用户所有交易记录
     * @param customerId 客户ID
     * @return 交易信息列表
     */
    @Select("SELECT t.* FROM tradeInfo t JOIN cardInfo c ON t.cardID = c.cardID WHERE c.customerID = #{customerId}")
    List<TradeInfo> findByCustomerId(Long customerId);
}